package bai.publicwelfare_backend.exception;

import bai.publicwelfare_backend.exception.ErrorCode;
import lombok.Getter;

import java.util.Map;

@Getter
public class BusinessException extends RuntimeException {
    private final ErrorCode errorCode;
    private final Map<String, Object> context; // 错误上下文（用于日志）

    // 基础构造器
    public BusinessException(ErrorCode errorCode) {
        this(errorCode, errorCode.getDefaultMsg(), null);
    }

    // 支持动态消息
    public BusinessException(ErrorCode errorCode, String message) {
        this(errorCode, message, null);
    }

    // 完整构造器（带上下文）
    public BusinessException(ErrorCode errorCode, String message, Map<String, Object> context) {
        super(message != null ? message : errorCode.getDefaultMsg());
        this.errorCode = errorCode;
        this.context = context;
    }

    // 快速构建方法（推荐）
    public static BusinessException of(ErrorCode errorCode) {
        return new BusinessException(errorCode);
    }

}
